/**
 * 深拷贝
 * @param {Object|Array} target  拷贝对象
 * @returns {Object|Array} result 拷贝结果
 */
export function deepCopy(target) {
    if (Array.isArray(target)) {
        return target.map(item => deepCopy(item));
    }
    if (typeof target === 'object' && target !== null) {
        // 先将对象转为二维数组，再将二维数组转回对象（这个过程还是浅拷贝）
        // 所以使用map方法将二维数组里的元素进行深拷贝完了再转回对象
        return Object.fromEntries(Object.entries(target).map(([k, v]) => [k, deepCopy(v)]));
    }
    return target;
}
// 对象数组去重
export function arrDistinctByKey(arr, key) {
    const temp = new Map(); // 使用Map可以比对多种类型，不限于字符串
    return arr.filter((item) => !temp.has(item[key]) && temp.set(item[key], true));
}
/**
 * 快速创建一个指定长度的数组并填充内容
 * const array = new Array(100).fill('');
 * const array = Array.from(new Array(100).keys());
 * const array = Array.from({length: 100}, (v,i) => i);
 * */

// 判断数据类型
export function judgeDataType(val, type) {
    const dataType = Object.prototype.toString.call(val).replace(/\[object (\w+)\]/, "$1").toLowerCase();
    return type ? dataType === type : dataType;
}
// 检查是否为空对象
// Object.keys({}).length  // 0
// JSON.stringify({}) === '{}';
